<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wmh="http://www.wmhelp.com/2003/eGenerator" elementFormDefault="qualified">
	<xs:element name="Log4Nez">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="Configuration"/>
				<xs:element ref="Loggers"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Configuration">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="LogTraceLevel"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="LogTraceLevel">
		<xs:complexType>
			<xs:attribute name="level" type="xs:int" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="Loggers">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="DatabaseLogger" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="EventLogLogger" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element ref="CsvLogger" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="DatabaseLogger">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="PropertiesMapping"/>
			</xs:sequence>
			<xs:attribute name="connectionString" type="xs:string" use="required"/>
			<xs:attribute name="tableName" type="xs:string" use="required"/>
			<xs:attribute name="loggerName" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="PropertiesMapping">
		<xs:complexType>
			<xs:choice>
				<xs:sequence>
					<xs:element ref="add" maxOccurs="unbounded"/>
				</xs:sequence>
				<xs:sequence>
					<xs:element ref="Origin"/>
					<xs:element ref="EventId"/>
					<xs:element ref="CategoryId"/>
					<xs:element ref="InstanceId"/>
					<xs:element ref="Message"/>
				</xs:sequence>
			</xs:choice>
			<xs:attribute name="class" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="add">
		<xs:complexType>
			<xs:attribute name="property" type="xs:string" use="required"/>
			<xs:attribute name="column" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="EventLogLogger">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="PropertiesMapping"/>
			</xs:sequence>
			<xs:attribute name="eventSourceName" type="xs:string" use="optional"/>
			<xs:attribute name="loggerName" type="xs:string" use="required"/>
			<xs:attribute name="sourceName" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="Origin">
		<xs:complexType>
			<xs:attribute name="property" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="EventId">
		<xs:complexType>
			<xs:attribute name="property" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="CategoryId">
		<xs:complexType>
			<xs:attribute name="property" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="InstanceId">
		<xs:complexType>
			<xs:attribute name="property" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="Message">
		<xs:complexType>
			<xs:attribute name="property" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="CsvLogger">
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="PropertiesMapping"/>
			</xs:sequence>
			<xs:attribute name="filename" type="xs:string" use="optional"/>
			<xs:attribute name="loggerName" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
</xs:schema>